#include<bits/stdc++.h>
using namespace std;
#define int long long
bool ispr(int x){
	if(x<2) return 0;
	for(int i=2;i*i<=x;i++) if(x%i==0) return 0;return 1;
}
unordered_set<int> st;
int mid(int x,int y,int z){return x+y+z-min({x,y,z})-max({x,y,z});}
const int N=8005;
int n,m,x[N],y[N],o[N];
int dis(int i,int j){return abs(x[i]-x[j])+abs(y[i]-y[j]);}

void work(){
	int i,j,k;
	cin>>n>>m;for(i=1;i<=n;i++) cin>>x[i]>>y[i];for(i=1;i<=n;i++) cin>>o[i];
	int ans=0;
	for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) for(k=j+1;k<=n;k++)
		if(st.count(mid(dis(i,j),dis(j,k),dis(k,i)))) ans+=o[i]+o[j]+o[k];
	cout<<ans<<'\n';
}

signed main(){
	freopen("chess.in","r",stdin);
	freopen("chess.out","w",stdout);
	cin.tie(nullptr)->sync_with_stdio(false);
	for(int i=1;i<=60000;i++) if(ispr(i)&&(i%20==3||i<=10)) st.insert(i);
	int _;cin>>_;while(_--) work();
	return 0;
}